class Dog{
    name:string = "佩奇";
    age:number;
    move(test:string){
        
    }
}
//公有和私有，不去指定我们的修饰符，属性默认就是public
//private：私有属性，他呢就不能再声明他的类的外部去访问
class Dog2{
    public name:string = "佩奇";
    private age:number;
    move(test:string){
        
    }
}
let dog = new Dog2()
dog.name= ""
//protected，这个呢和private修饰符非常相似，但又一个地方不一样，在我们的子类，也就是派生类中还可以用
class Person{
    protected name:string;
    constructor(name:string){
        this.name = name;
    }
}
class Emplyoee extends Person{
    private deparment:string;
    //先static 后readonly
    public static readonly   demo:string
    constructor(readonly name:string){
        super(name)            
    }
    public test(){
        this.name
    }
}
let emplyoe = new Emplyoee("123")

//readonly修饰符，只读，不可以重新赋值
//static 静态属性，我们可以通过类去直接获取该属性，不需要new

//类也可以当做类型去使用
class Point1{
    x1:number;
    y1:number;
}
let obj2:Point1 = {
    x1: 123,
    y1: 123
}
//什么时候用类去定义类型，什么时候用接口去定义类型呢？
//当我们需要实例化对象的时候，一般用类去定义
let pointsss:Point1 = new Point1()
//当我们不关心实例化对象,用接口定义
// let point:Point1 ={
//     x1: 0,
//     y1: 0
// }




